package main

func main() {

}

//给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。
func lengthOfLongestSubstring(s string) int {
	result := 0
	windows := make(map[byte]int)
	sBytes := []byte(s)
	left, right := 0, 0
	for right < len(s) {
		letter := sBytes[right]
		right++
		windows[letter]++
		//判断窗口是否需要收缩
		if windows[letter] > 1 {
			d := sBytes[left]
			left++
			windows[d]--
		}
		result = max(result, right-left)
	}

	return result
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
